Audio startup and wallpaper persistence
Audio
pepvoid-pipewire-launcher now starts one supervisor per user runtime directory.
An atomic file lock replaces the old directory lock and stale-lock deletion.
Repeated XDG and window manager startup calls register their sessions with the
same supervisor.
The supervisor:
Lets PipeWire launch its configured WirePlumber and Pulse helpers first.
Recovers missing helpers and restarts owned daemons after crashes, with retry backoff instead of a tight restart loop.
Recognizes Void’s
pipewire -c pipewire-pulse.confprocess correctly.Checks the Pulse protocol with
pactl info, rather than treating a leftover socket file as a healthy audio server.Recovers an owned core that fails to create its socket or becomes unresponsive.
Tracks active session buses so a quick logout/login does not shut down the new session’s sound. Recovered helpers use a current session bus.
Stops only its own process groups after all registered session buses close.
Volumeicon waits for the audio server and WirePlumber before testing the ALSA mixer. Its launcher restarts it if a later device or server transition closes the applet, rather than giving up after a fixed number of startup attempts. Pavucontrol remains its mixer. User volumes, mute settings, selected outputs and WirePlumber state are preserved.
The existing native PipeWire configuration follows the Void Linux PipeWire setup. No system-wide audio daemon is added, and active server sockets are not deleted.
Diagnostic commands:
pepvoid-pipewire-launcher --status
pactl info
wpctl status
tail -n 80 "$XDG_RUNTIME_DIR/pepvoid-audio.log"
--status returns zero when the server responds and the local PipeWire policy
manager is present. --wait starts the supervisor and waits for readiness.
Wallpaper
Openbox, Qtile, Awesome, i3, bspwm, herbstluftwm, Fluxbox and IceWM use
pepvoid-wallpaper as their single wallpaper owner. Nitrogen remains the
graphical wallpaper selector; its saved configuration remains authoritative.
At session startup, the helper restores the saved image and fit mode. It watches RandR geometry and rotation, saved settings, and image availability. Resolution changes trigger a repaint within the polling interval of approximately two seconds. It also detects an image becoming available after login.
The helper creates the default only when the user’s saved file is absent.
Malformed or partially written settings do not replace the current image.
Fallback rendering uses the saved image when possible and does not generate a
competing .fehbg file. A missing image uses the brand fallback until the image
becomes available again.
Default settings use Nitrogen’s xin_-1 group with proportional zoom-fill.
Hardcoded :0.0 and :0.1 display entries have been removed from the defaults.
Awesome no longer paints its fixed theme wallpaper over the user’s choice,
and i3 reloads no longer paint the brand image before restoring preferences.
The watcher is locked per X display and exits when that display closes. Traditional desktops, Enlightenment and Wayland sessions retain their native wallpaper managers and persistence mechanisms. The X11 helper does not run inside Wayland sessions.
Manual restore:
pepvoid-wallpaper --restore
Validation and rollout
Native PipeWire, WirePlumber and Pulse tests use private runtime directories and D-Bus sessions, including concurrent starts, controlled crashes and playback through a virtual sink. Wallpaper tests use isolated Xvfb/Xephyr displays and native Nitrogen, exercising selection changes, an 800x600 to 1100x700 resize, helper restart and display shutdown.
These changes are in the image builder and apply to newly built images. They do not modify an already running VirtualBox guest. Physical audio devices, saved hardware routing and actual reboot/logout behavior still need verification in the target VM or installed system. No complete ISO was built for this change.